package com.candoit.webapps.pricing.controllers;

import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.candoit.webapps.pricing.model.ImportFile;
import com.candoit.webapps.pricing.util.ImportExcelUtil;
import com.candoit.webapps.pricing.util.QueryUtil;

@ManagedBean(name = "fileCtrl")
@ViewScoped
public class ImportFileController extends AbstractController {
	
	private List<ImportFile> files;

	public List<ImportFile> getFiles() {
		if (files == null){
			files = QueryUtil.getInstance().getImportsFiles();
		}	
		return files;
	}

	public void setFiles(List<ImportFile> files) {
		this.files = files;
	}
	
	public void importFiles(){
		boolean error =false;
		Iterator<ImportFile> it = files.iterator();
		while (it.hasNext()){
			ImportFile file = (ImportFile) it.next();
			if (file.getId() == ImportFile.CUENTAS_CODE && file.getArchivo() != null){
				boolean ok = ImportExcelUtil.getInstance().importarCuentas(file.getArchivo());
				if (ok){	
					file.setFechaActualizacion(new Date());
					this.update(file);
				}else{
					error = true;
				}
			}else if (file.getId() == ImportFile.CUENTAS_MO_CODE && file.getArchivo() != null){
				boolean ok = ImportExcelUtil.getInstance().importarCuentasManoDeObra(file.getArchivo());
				if (ok){	
					file.setFechaActualizacion(new Date());
					this.update(file);
				}else{
					error = true;
				}
			}else if (file.getId() == ImportFile.MP_CODE && file.getArchivo() != null){
				boolean ok = ImportExcelUtil.getInstance().importarMaterias(file.getArchivo());
				if (ok){	
					file.setFechaActualizacion(new Date());
					this.update(file);
				}else{
					error = true;
				}
			}
			
		}
		
		if (error){
			FacesContext.getCurrentInstance().addMessage("fileform:botonImportar", new FacesMessage("Error al importar el archivo"));
			return;	
		}
		
	}


}
